/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package control;

import java.io.IOException;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import javax.swing.DefaultComboBoxModel;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;
import model.DaiHan;
import model.NganHan;
import model.Oto;
import utility.ConnectDB;

/**
 *
 * @author Lc.Danh
 */
public class OtoController {
    //Các phương thức dành cho form ô tô
    
    //Phương thức lấy bảng danh sách ô tô
    public static void ShowTable(JTable parent) throws SQLException, IOException
    {
        String sql = "SELECT * FROM Oto";
        ResultSet table = ConnectDB.getResultSet(sql);
        
        ResultSetMetaData rsmd = table.getMetaData();
        
        int column = rsmd.getColumnCount(); //Số cột
        
        DefaultTableModel model = new DefaultTableModel();  //Model đệm trước khi đẩy vào JTable
        
        //Lấy tiêu đề các cột và gán vào model
        String cname[] = new String[column];
        for (int i=0;i<column;i++)
            cname[i]=rsmd.getColumnName(i+1);
        model.setColumnIdentifiers(cname);
        
        
        //Lấy dữ liệu
        while (table.next())
        {
            String record[] = new String[column];
            for (int i = 0; i<column;i++)
                record[i]=table.getString(i+1);
            
                //if (i==2)
                //System.out.println(table.getObject(i+1));
            
            model.addRow(record);
            
        }
        //Đẩy model lên JTable
        parent.setModel(model);
    }
    
    //Phương thức lấy danh sách khách hàng
    public static DefaultComboBoxModel LayKH() throws SQLException
    {
        DefaultComboBoxModel temp = new DefaultComboBoxModel();
        String sql="SELECT MaKH FROM KhachHang";

        ResultSet table = ConnectDB.getResultSet(sql);
        while (table.next())
        {
            temp.addElement(table.getString(1));
        }
        return temp;
    }
    
    //Phương thức thêm Oto vào database
    public static int ThemXe(Oto ot)
    {
        String sql = "INSERT INTO Oto(BienSo,MaKhachHang,NhanHieu,Model,NgayVao,LoaiGui) VALUES (";
        sql = sql + "'" + ot.getBienSo() + "'";
        sql = sql + ",'" + ot.getMaKH() + "'";
        sql = sql + ",'" + ot.getNhanHieu() + "'";
        sql = sql + ",N'" + ot.getModel() + "'";
        sql = sql + ",'" + ot.getNgayVao() + "'";
        sql = sql + ",'" + ot.getLoaiGui() + "'";
        sql = sql + ")";
        
        
        //sql = sql + ",(SELECT MaKH From KhachHang WHERE MaKH =" + "N'" + ot.getMaKH() + "')";
        System.out.println(sql);
        return ConnectDB.ExecuteQueryString(sql);
    }
    
    //Phương thức xóa xe
    public static int Delete(Oto ot)
    {
         String sql = " DELETE FROM Oto WHERE BienSo = " + "'" + ot.getBienSo() + "'";
         System.out.println(sql);
         return ConnectDB.ExecuteQueryString(sql);
    }
    
    //Phương thức cập nhật
    public static int CapNhat(Oto xe)
    {
        String sql = "UPDATE Oto SET MaKhachHang ='";
            sql = sql + xe.getMaKH() + "'";
            sql = sql + ",NhanHieu = ";
            sql = sql + "N'" + xe.getNhanHieu() + "'";
            sql = sql + ",Model = ";
            sql = sql + "'" + xe.getModel() + "'";
            sql = sql + ",NgayVao = ";
            sql = sql + "'" + xe.getNgayVao() + "'";
            sql = sql + ",LoaiGui = ";
            sql = sql + "'" + xe.getLoaiGui() + "'";
            sql = sql + " WHERE BienSo = '";
            sql = sql + xe.getBienSo() + "'";
            
            System.out.println(sql);
        return ConnectDB.ExecuteQueryString(sql);
    }
    
    //Phương thức tìm kiếm theo biển số
    public static void Search(JTable parent,String bx) throws SQLException
    {
        String sql = "SELECT * FROM Oto WHERE BienSo LIKE '%" + bx + "%'";
        ResultSet table = ConnectDB.getResultSet(sql);
        
        ResultSetMetaData rsmd = table.getMetaData();
        
        int column = rsmd.getColumnCount(); //Số cột
        
        DefaultTableModel model = new DefaultTableModel();  //Model đệm trước khi đẩy vào JTable
        
        //Lấy tiêu đề các cột và gán vào model
        String cname[] = new String[column];
        for (int i=0;i<column;i++)
            cname[i]=rsmd.getColumnName(i+1);
        model.setColumnIdentifiers(cname);
        
        
        //Lấy dữ liệu
        while (table.next())
        {
            String record[] = new String[column];
            for (int i = 0; i<column;i++)
                record[i]=table.getString(i+1);
            
                //if (i==2)
                //System.out.println(table.getObject(i+1));
            
            model.addRow(record);
            
        }
        //Đẩy model lên JTable
        parent.setModel(model);
    }
    
    //Phương thức thanh toán dài hạn
    public static int ThanhToan(JTable tbCheck, DaiHan xe) {
        String sql = "UPDATE Oto SET NgayRa = '" + xe.getHanThanhToan() + "'";
            sql = sql + " WHERE BienSo = '" + xe.getBienSo() + "'";
            
        String sql2 = "INSERT INTO DoanhThu VALUES('" + xe.getNgayThanhToan() + "','" + xe.getBienSo() + "','1','" + xe.getTongTien() + "')";
            if (ConnectDB.ExecuteQueryString(sql) == 1 && ConnectDB.ExecuteQueryString(sql2) == 1)
                return 1;
            else
                return 0;
        
    }

    
    //Phương thức check in
    public static int CheckIn(JTable tbCheck, NganHan xe) {
        String sql = "UPDATE Oto SET NgayVao = '" + xe.getGioVao() + "', TrangThai = '1', NgayRa = NULL";
        sql = sql + " WHERE BienSo = '" + xe.getBienSo() + "'";
        
        return ConnectDB.ExecuteQueryString(sql);
    }

    //Phương thức check out
    public static int CheckOUT(JTable tbCheck, NganHan xe) {
        String sql1 = "UPDATE Oto SET NgayRa = '" + xe.getGioRa() + "',  TrangThai = NULL";
            sql1 = sql1 + " WHERE BienSo = '" + xe.getBienSo() + "'";

            //return sql1;

            String sql2 = "INSERT INTO DoanhThu VALUES('" + xe.getGioRa() + "','" + xe.getBienSo() + "','1','" + xe.getTongTien() + "')";
            if (ConnectDB.ExecuteQueryString(sql1) == 1 && ConnectDB.ExecuteQueryString(sql2) == 1)
                return 1;
            else
                return 0;
    }

    
}
